package kr.saeildamil.androidStudy_second.draw;

import java.util.Random;

import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;

public class Ball {
	int x; // 볼의 첫 터치했을때 x좌표
	int y; // 볼의 첫 터치했을때 y좌표
	int rad; // 볼의 반지름

	int dx; // 볼의 이동방향 및 속도 dx
	int dy; // 볼의 이동방향 및 속도 dy

	int color; // 볼의 색
	int count; // 벽에 부딫힌 횟수

	// 방법1-------------------------------
	
	public Ball(int x, int y){
		Random rnd = new Random();
		this.x = x;
		this.y = y;
		this.rad = rnd.nextInt(26) + 25;
		this.count = 0;
		this.color = Color.rgb(
				rnd.nextInt(256), 
				rnd.nextInt(256),
				rnd.nextInt(256)
			);
		
		do {
			this.dx = rnd.nextInt(11) - 5;
			this.dy = rnd.nextInt(11) - 5;
		} while (this.dx == 0 || this.dy == 0);
		
	}
	
	
	// 방법2-------------------------------
	
	/*static Ball Create(int x, int y) {
		Random rnd = new Random();
		//Ball newBall = new Ball();

		newBall.x = x;
		newBall.y = y;
		newBall.rad = rnd.nextInt(26) + 25; // 볼의 사이즈는 25~50

		do {
			newBall.dx = rnd.nextInt(11) - 5;
			newBall.dy = rnd.nextInt(11) - 5;
		} while (newBall.dx == 0 || newBall.dy == 0);

		newBall.count = 0;
		newBall.color = Color.rgb(
							rnd.nextInt(256), 
							rnd.nextInt(256),
							rnd.nextInt(256)
						);

		return newBall;
	}*/

	public void Move(int Width, int Height) { // 화면사이즈를 매개변수로 받음.
		x += dx;
		y += dy;

		if (x < rad || x > Width - rad) {
			dx *= -1; // 반대방향 전환
			count++; // 벽에 부딪힌횟수 증가
		}

		if (y < rad || y > Height - rad) {
			dy *= -1;
			count++;
		}
	}

	public void Draw(Canvas canvas) {
		Paint pnt = new Paint();
		pnt.setAntiAlias(true);

		for (int r = rad, alpha = 1; r > 4; r--, alpha += 5) {
			pnt.setColor(
					Color.argb(
							alpha, 
							Color.red(color),
							Color.green(color), 
							Color.blue(color)
					)
			);
			canvas.drawCircle(x, y, r, pnt);
		}
	}
}
